package edu.pe.cayetano.view.action;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.RowSetDynaClass;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.framework.Configuration;
import edu.pe.cayetano.model.bo.CitaBO;
import edu.pe.cayetano.model.bo.EspecialidadBO;
import edu.pe.cayetano.model.bo.HorarioAtencionBO;
import edu.pe.cayetano.model.bo.PlanTratramientoBO;
import edu.pe.cayetano.model.bo.SedeBO;
import edu.pe.cayetano.model.bo.SillonDentalBO;
import edu.pe.cayetano.model.to.CitaTO;
import edu.pe.cayetano.model.to.PlanTratamientoTO;
import edu.pe.cayetano.seccd.constantes.ConstantesListas;
import edu.pe.cayetano.seccd.constantes.ConstantesMensajes;
import edu.pe.cayetano.seccd.constantes.ConstantesSECCD;
import edu.pe.cayetano.seccd.constantes.ConstantesSession;
import edu.pe.cayetano.util.EscribeLog;
import edu.pe.cayetano.util.UtilTime;
import edu.pe.cayetano.util.Utilitario;
import edu.pe.cayetano.util.UtilitarioSession;

public class CitaAction extends BaseAction{
	
	private String page=null;
	
	public ActionForward listar(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult		ret					= new BResult();
		CitaBO		citaBO 	= new CitaBO();
		try {
			HttpSession session = request.getSession(false);
			ret = citaBO.listarCita();
			if(ret.getCode()==0 && ret.getObject()!=null){
				page=UtilitarioSession.establecePaginaExito(session);
				UtilitarioSession.eliminaParametrosBusquedaGenerico(session);
				UtilitarioSession.seteaParametrosListadoGenerico(session,(RowSetDynaClass)ret.getObject());
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","listar",ConstantesSECCD.ERROR,ret.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_LISTAR,new String[0],"home.do","home");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","listar",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_CITA_LISTAR);
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_LISTAR,new String[0],"home.do","home");
		}
		return mapping.findForward(page);	
	}
	
	public ActionForward buscaCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult		ret			= new BResult();
		CitaBO		citaBO 		= new CitaBO();
		try {
			HttpSession 		session 	= request.getSession(false);
			DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			ret = citaBO.buscarCita(dyna);
			if(ret.getCode()==0 && ret.getObject()!=null){
				page=UtilitarioSession.establecePaginaExito(session);
				UtilitarioSession.seteaParametrosBusquedaGenerico(session,(RowSetDynaClass)ret.getObject(),dyna);
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","buscaCita",ConstantesSECCD.ERROR,ret.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_BUSQUEDA,new String[0],"cita.do","listar");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","buscaCita",ConstantesSECCD.ERROR,ret.getMessage());
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_BUSQUEDA,new String[0],"cita.do","listar");
		}
		return mapping.findForward(page);	
	}
	
	public ActionForward cargaCitaxDia(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult					retS			= new BResult();
		SedeBO					sedeBO  		= new SedeBO();
		ArrayList				listaTemporal   = null;
		try{
			HttpSession 		session 	= request.getSession(false);
			DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			retS = sedeBO.getSedes();
			if(retS.getCode()==0 && retS.getObject()!=null){
				HorarioAtencionBO	horarioBO  = new HorarioAtencionBO();
				BResult				retH	= new BResult();
				retH = horarioBO.getHorarios("SZ");
				if(retH.getCode()==0 && retH.getObject()!=null){
					CitaBO 		citaBO = new CitaBO();
					BResult		retC	= new BResult();
					retC = citaBO.getCitasxDia(UtilTime.devuelveDia(false),dyna);
					listaTemporal = (ArrayList)retC.getObject();
					
					UtilitarioSession.seteaListasHorariosxCita(session,listaTemporal);
					UtilitarioSession.seteaHabilitaAccionCita(session,request);
					session.setAttribute(ConstantesListas.LISTA_DIA, UtilTime.devuelveDia(true));
					session.setAttribute(ConstantesListas.LISTA_HORARIOS, (ArrayList<?>)retH.getObject());
					session.setAttribute(ConstantesListas.LISTA_SEDES, (ArrayList<?>)retS.getObject());
					session.setAttribute("formatoCalendario", "dia");
					UtilitarioSession.seteaAtributosInsertaCita(session,dyna);
					page=UtilitarioSession.establecePaginaExito(session);
				}else{
					page=ConstantesSECCD.ERROR;
					EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,retS.getMessage());
					mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
				}
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,retS.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
			}
		}catch(Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_ORDENSERVICIO_CARGAINSERTAR);
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
		}	
		return mapping.findForward(page);	
	}

	public ActionForward cargaCitaxSemana(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult					retS			= new BResult();
		SedeBO					sedeBO  		= new SedeBO();
		ArrayList				listaTemporal   = null;
		try{
			HttpSession 		session 	= request.getSession(false);
			DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			retS 							= sedeBO.getSedes();
			System.out.println("ejecutando:cargaCitaxSemana");
			
			System.out.println("cargaCitaxSemana::sede:<"+request.getParameter("cboSede")+">");
			System.out.println("cargaCitaxSemana::especialidad:<"+request.getParameter("cboEspecialidad")+">");
			System.out.println("cargaCitaxSemana::sillon:<"+request.getParameter("cboSillon")+">");
			
			System.out.println("***************************");
			if(retS.getCode()==0 && retS.getObject()!=null){
				HorarioAtencionBO	horarioBO  = new HorarioAtencionBO();
				BResult				retH	= new BResult();
				retH = horarioBO.getHorarios("SZ");
				if(retH.getCode()==0 && retH.getObject()!=null){
					CitaBO 		citaBO = new CitaBO();
					BResult		retC	= new BResult();
					retC = citaBO.getCitasxSemana(UtilTime.devuelveDiasSemana(false,true),dyna);
					listaTemporal = (ArrayList)retC.getObject();
					
					UtilitarioSession.seteaListasHorariosxCita(session,listaTemporal);
					UtilitarioSession.seteaHabilitaAccionCita(session,request);
					session.setAttribute(ConstantesListas.LISTA_SEMANA, UtilTime.devuelveDiasSemana(true,true));
					session.setAttribute(ConstantesListas.LISTA_HORARIOS, (ArrayList<?>)retH.getObject());
					session.setAttribute(ConstantesListas.LISTA_SEDES, (ArrayList<?>)retS.getObject());
					session.setAttribute("formatoCalendario", "semana");
					UtilitarioSession.seteaAtributosInsertaCita(session,dyna);
					page=UtilitarioSession.establecePaginaExito(session);
				}else{
					page=ConstantesSECCD.ERROR;
					EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,retS.getMessage());
					mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
				}
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,retS.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
			}
		}catch(Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_ORDENSERVICIO_CARGAINSERTAR);
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
		}	
		return mapping.findForward(page);	
	}
	
	public ActionForward cargaInsertaCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult					retS			= new BResult();
		SedeBO					sedeBO  		= new SedeBO();
		UtilTime			utilTime		= new UtilTime();
		ArrayList				listaEvaluaDia	= new ArrayList();
		try{
			HttpSession 		session 	= request.getSession(false);
			retS = sedeBO.getSedes();
			if(retS.getCode()==0 && retS.getObject()!=null){
				HorarioAtencionBO	horarioBO  = new HorarioAtencionBO();
				BResult				retH	= new BResult();
				retH = horarioBO.getHorarios("SZ");
				if(retH.getCode()==0 && retH.getObject()!=null){
					
					listaEvaluaDia = utilTime.devuelveListaValidaDiaPPF();
					
					session.setAttribute(ConstantesListas.LISTA_SEMANA, UtilTime.devuelveDiasSemana(true,true));
					session.setAttribute(ConstantesListas.LISTA_HORARIOS, (ArrayList<?>)retH.getObject());
					session.setAttribute(ConstantesListas.LISTA_SEDES, (ArrayList<?>)retS.getObject());
					session.setAttribute("formatoCalendario", "semana");
					session.setAttribute("habilitaAccion", "0");
					session.setAttribute("diaSemana", utilTime.devuelveDiaSemanaxFechaActual());
					session.removeAttribute("tempSede");
					session.removeAttribute("tempSillon");
					session.removeAttribute("tempEspecialidad");
					
					session.setAttribute("EVALUA_DIA_1",listaEvaluaDia.get(0));
					session.setAttribute("EVALUA_DIA_2",listaEvaluaDia.get(1));
					session.setAttribute("EVALUA_DIA_3",listaEvaluaDia.get(2));
					session.setAttribute("EVALUA_DIA_4",listaEvaluaDia.get(3));
					session.setAttribute("EVALUA_DIA_5",listaEvaluaDia.get(4));
					session.setAttribute("EVALUA_DIA_6",listaEvaluaDia.get(5));
					
					request.setAttribute("cargaInicial", "0");
		
					session.removeAttribute("SIZE_LISTA_DIA_1");
					session.removeAttribute("SIZE_LISTA_DIA_2");
					session.removeAttribute("SIZE_LISTA_DIA_3");
					session.removeAttribute("SIZE_LISTA_DIA_4");
					session.removeAttribute("SIZE_LISTA_DIA_5");
					session.removeAttribute("SIZE_LISTA_DIA_6");
					
					session.removeAttribute("LISTA_DIA_1");
					session.removeAttribute("LISTA_DIA_2");
					session.removeAttribute("LISTA_DIA_3");
					session.removeAttribute("LISTA_DIA_4");
					session.removeAttribute("LISTA_DIA_5");
					session.removeAttribute("LISTA_DIA_6");					
					
					page=UtilitarioSession.establecePaginaExito(session);
					System.out.println("page:"+page);
				}else{
					page=ConstantesSECCD.ERROR;
					EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,retS.getMessage());
					mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
				}
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,retS.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
			}
		}catch(Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","cargaInsertaCita",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_ORDENSERVICIO_CARGAINSERTAR);
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
		}	
		return mapping.findForward(page);	
	}
	
	public ActionForward cargaEspecialidadesxSedexCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult			ret			= new BResult();
		EspecialidadBO		especialidadBO 	= new EspecialidadBO();
		
		try{
			HttpSession 		session 	= request.getSession(false);
			if(request.getParameter("cboSede").equalsIgnoreCase("0")){
				session.removeAttribute("tempSede");
				session.removeAttribute("tempEspecialidad");
				session.removeAttribute(ConstantesListas.LISTA_ESPECIALIDADES);
				session.removeAttribute("tempSillon");
				session.removeAttribute(ConstantesListas.LISTA_SILLONES);
			}else{
				DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			    ret = especialidadBO.getEspecialidadadesxSedexCita(dyna);
				if(ret.getCode()==0 && ret.getObject()!=null){
					UtilitarioSession.seteaAtributosSessionCita(session,dyna,ret,ConstantesListas.LISTA_ESPECIALIDADES);
					session.removeAttribute(ConstantesListas.LISTA_SERVICIOS);
				}else{
					page=ConstantesSECCD.ERROR;
					EscribeLog.escribeLog("CitaAction","cargaEspecialidadesxSedexCita",ConstantesSECCD.ERROR,ret.getMessage());
					mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
				}
			}
			page=UtilitarioSession.establecePaginaExito(session);
			UtilitarioSession.seteaHabilitaAccionCita(session,request);
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","cargaEspecialidadesxSedexCita",ConstantesSECCD.ERROR,ret.getMessage());
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
		}
		return mapping.findForward(page);	
	}

	public ActionForward cargaSillonesxEspecialidadesxSedexCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult				ret			= new BResult(); 
		SillonDentalBO		sillonBO 	= new SillonDentalBO();
		
		try{
			HttpSession 		session 	= request.getSession(false);
			if(request.getParameter("cboEspecialidad").equalsIgnoreCase("0")){
				session.removeAttribute("tempEspecialidad");
				session.removeAttribute("tempSillon");
				session.removeAttribute(ConstantesListas.LISTA_SILLONES);
			}else{
				DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			    ret = sillonBO.getSillonDentalxEspecialidad(dyna);
				if(ret.getCode()==0 && ret.getObject()!=null){
					UtilitarioSession.seteaAtributosSessionCita(session,dyna,ret,ConstantesListas.LISTA_SILLONES);
					UtilitarioSession.seteaAtributosSessionCita(session,dyna);
				}else{
					page=ConstantesSECCD.ERROR;
					EscribeLog.escribeLog("CitaAction","cargaSillonesxEspecialidadesxSedexCita",ConstantesSECCD.ERROR,ret.getMessage());
					mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
				}
			}
			page=UtilitarioSession.establecePaginaExito(session);
			UtilitarioSession.seteaHabilitaAccionCita(session,request);
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","cargaSillonesxEspecialidadesxSedexCita",ConstantesSECCD.ERROR,ret.getMessage());
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
		}
		return mapping.findForward(page);	
	}
	
	public ActionForward popupCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		try{
			HttpSession 		session 	= request.getSession(false);
			DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			HorarioAtencionBO	horario		= new HorarioAtencionBO();
			BResult				retH		= new BResult();
			UtilTime		utilTime	= new UtilTime();
			retH = horario.getHorarios("CZ");
			if(retH.getCode()==0 && retH.getObject()!=null){
				SedeBO			sede		= new SedeBO();
				BResult			retS		= new BResult();
				retS = sede.getSedes();
				if(retS.getCode()==0 && retS.getObject()!=null){
					EspecialidadBO			especialidadBO	= new EspecialidadBO();
					BResult					retE			= especialidadBO.getEspecialidadadesxSedexCita(dyna);
					if(retE.getCode()==0 && retE.getObject()!=null){
						SillonDentalBO			sillonBO	= new SillonDentalBO();
						BResult					retSD		= sillonBO.getSillonDentalxEspecialidad(dyna);
						if(retSD.getCode()==0 && retSD.getObject()!=null){
							page=ConstantesSECCD.EXITO;
							session.setAttribute("tempSillon", request.getParameter("cboSillon"));
							String fechaSolicitada = request.getParameter("cboFecha").substring(4, request.getParameter("cboFecha").length());
							session.setAttribute("tempFechaInicio", utilTime.devuelveFechaActual(fechaSolicitada));
							session.setAttribute("tempHorario", request.getParameter("cboHorario"));
							
							session.setAttribute("fechaActual", UtilTime.devuelveFechaActualDMY());
							session.setAttribute(ConstantesListas.LISTA_ESPECIALIDADES, (ArrayList<?>)retE.getObject());
							session.setAttribute(ConstantesListas.LISTA_SEDES, (ArrayList<?>)retS.getObject());
							session.setAttribute(ConstantesListas.LISTA_HORARIOS, (ArrayList<?>)retH.getObject());
							session.setAttribute(ConstantesListas.LISTA_SILLONES, (ArrayList<?>)retSD.getObject());
							session.setAttribute(ConstantesSession.RANGO_ASIGNACION_CITA,Configuration.getRangoAsignacionCita());
							UtilitarioSession.seteaAtributosSessionCita(session,dyna);
						}else{
							page=ConstantesSECCD.ERROR;
							EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retSD.getMessage());
							mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");							
						}
					}else{
						page=ConstantesSECCD.ERROR;
						EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retE.getMessage());
						mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
					}
				}else{
					page=ConstantesSECCD.ERROR;
					EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retS.getMessage());
					mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
				}
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retH.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","buscarEspecialidadxSede",ConstantesSECCD.ERROR,"");
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
		}
		return mapping.findForward(page);	
	}
	
	public ActionForward buscarDatosCabeceraPlanTratamiento(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult					ret				= new BResult();
		PlanTratramientoBO		planTratBO  	= new PlanTratramientoBO();
	    ArrayList				listaServicio   = new ArrayList();
	    ArrayList				tmpListaServicio   = new ArrayList();

		try{
			HttpSession 		session 	= request.getSession(false);
			DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			ret = planTratBO.buscarDatosCabeceraPlanTratamiento(dyna);
			if(ret.getCode()==0 && ret.getObject()!=null){
				page=ConstantesSECCD.EXITO;
				
				String tmpPaciente  = ((PlanTratamientoTO)((ArrayList)ret.getObject()).get(0)).getPaciente();
				
				listaServicio = ((ArrayList)ret.getObject());
				tmpListaServicio = (ArrayList)listaServicio.get(1);
				
				session.setAttribute(ConstantesListas.LISTA_SERVICIOS,tmpListaServicio);
				session.setAttribute("tmpPaciente", tmpPaciente);
				session.setAttribute("tmpCodPT", (String)dyna.get("txtPlanTratam"));
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","buscarDatosCabeceraPlanTratamiento",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR);
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"ordenServicio.do","listar");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","buscarDatosCabeceraPlanTratamiento",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR);
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"ordenServicio.do","listar");
		}
		return mapping.findForward(page);	
	}

	public ActionForward insertaCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		try{
			DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			BResult				ret			= new BResult();
			CitaBO				citaBO 		= new CitaBO();
			
			ret = citaBO.insertaCita(dyna);
			if(ret.getCode()==0){
				page=ConstantesSECCD.EXITO;
				EscribeLog.escribeLog("CitaAction","insertaCita",ConstantesSECCD.EXITO,ConstantesMensajes.EXITO_CITA_INSERTAR);
				mostrarMensaje(request,ConstantesMensajes.EXITO_CITA_INSERTAR,new String[0],"cita.do","listar");
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","insertaCita",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_CITA_INSERTAR);
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_INSERTAR,new String[0],"ordenServicio.do","listar");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","insertaCita",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_CITA_INSERTAR);
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_INSERTAR,new String[0],"ordenServicio.do","listar");
		}	
		return mapping.findForward(page);	
	}

	public ActionForward editaCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		return mapping.findForward(page);	
	}
	
	public ActionForward verPopUpCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		System.out.println("verPopUpCita:"+request.getParameter("cboCita"));
		try {
			BResult				ret			= new BResult();
			CitaBO				citaBO 		= new CitaBO();
			String 				cita		= request.getParameter("cboCita");
			ret = citaBO.verPopUpCita(cita);
			if(ret.getCode()==0 && ret.getObject()!=null){
				HttpSession session = request.getSession(false);
				page=ConstantesSECCD.EXITO;
				session.setAttribute(ConstantesSession.CITATO, (CitaTO)ret.getObject());
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","insertaCita",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_CITA_INSERTAR);
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_INSERTAR,new String[0],"ordenServicio.do","listar");				
			}
			
		} catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","insertaCita",ConstantesSECCD.ERROR,ConstantesMensajes.ERROR_CITA_INSERTAR);
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_INSERTAR,new String[0],"ordenServicio.do","listar");
		}

		return mapping.findForward(page);	
	}
	
	public ActionForward verEditaPopUpCita(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		try{
			HttpSession 		session 	= request.getSession(false);
			DynaBean			dyna		= Utilitario.createDynaBeanFromRequest("dynaBean", request);
			HorarioAtencionBO	horario		= new HorarioAtencionBO();
			BResult				retH		= new BResult();
			UtilTime			utilTime	= new UtilTime();
			retH = horario.getHorarios("CZ");
			if(retH.getCode()==0 && retH.getObject()!=null){
				SedeBO			sede		= new SedeBO();
				BResult			retS		= new BResult();
				retS = sede.getSedes();
				if(retS.getCode()==0 && retS.getObject()!=null){
					EspecialidadBO			especialidadBO	= new EspecialidadBO();
					BResult					retE			= especialidadBO.getEspecialidadadesxSedexCita(dyna);
					if(retE.getCode()==0 && retE.getObject()!=null){
						SillonDentalBO			sillonBO	= new SillonDentalBO();
						BResult					retSD		= sillonBO.getSillonDentalxEspecialidad(dyna);
						if(retSD.getCode()==0 && retSD.getObject()!=null){
							String 				cita			= request.getParameter("cboCita");
							BResult				retEdita		= new BResult();
							CitaBO				citaBO 			= new CitaBO();
							retEdita = citaBO.verPopUpCita(cita);
							if(retEdita.getCode()==0 && retEdita.getObject()!=null){
								PlanTratramientoBO	planTratamientoBO = new PlanTratramientoBO();
								ArrayList	listaServicios = planTratamientoBO.getServicioxDetallePlanTratamiento(((CitaTO)retEdita.getObject()).getCodigoPlanTrat());
								page=ConstantesSECCD.EXITO;
								session.setAttribute("tempSillon", request.getParameter("cboSillon"));
								String fechaSolicitada = request.getParameter("cboFecha").substring(4, request.getParameter("cboFecha").length());
								session.setAttribute("tempFechaInicio", utilTime.devuelveFechaActual(fechaSolicitada));
								session.setAttribute("tempHorario", request.getParameter("cboHorario"));
								session.setAttribute("tempServicio", ((CitaTO)retEdita.getObject()).getCodigoServicio());
								session.setAttribute(ConstantesSession.CITATO, (CitaTO)retEdita.getObject());
								session.setAttribute("fechaActual", UtilTime.devuelveFechaActualDMY());
								session.setAttribute(ConstantesListas.LISTA_ESPECIALIDADES, (ArrayList<?>)retE.getObject());
								session.setAttribute(ConstantesListas.LISTA_SEDES, (ArrayList<?>)retS.getObject());
								session.setAttribute(ConstantesListas.LISTA_SERVICIOS, listaServicios);
								session.setAttribute(ConstantesListas.LISTA_HORARIOS, (ArrayList<?>)retH.getObject());
								session.setAttribute(ConstantesListas.LISTA_SILLONES, (ArrayList<?>)retSD.getObject());
								session.setAttribute(ConstantesSession.RANGO_ASIGNACION_CITA,Configuration.getRangoAsignacionCita());
								UtilitarioSession.seteaAtributosSessionCita(session,dyna);
							}else{
								page=ConstantesSECCD.ERROR;
								EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retSD.getMessage());
								mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");		
							}
						}else{
							page=ConstantesSECCD.ERROR;
							EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retSD.getMessage());
							mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");							
						}
					}else{
						page=ConstantesSECCD.ERROR;
						EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retE.getMessage());
						mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
					}
				}else{
					page=ConstantesSECCD.ERROR;
					EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retS.getMessage());
					mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
				}
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CitaAction","popupCita",ConstantesSECCD.ERROR,retH.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CitaAction","buscarEspecialidadxSede",ConstantesSECCD.ERROR,"");
			mostrarMensaje(request,ConstantesMensajes.ERROR_CITA_CARGAINSERTAR,new String[0],"cita.do","listar");
		}
		return mapping.findForward(page);	
	}
}